package review.codeblock_;

public class CodeBlockDetail01 {
    public static void main(String[] args) {

        //类被加载的情况
        //1.创建对象实例时(new)
//        AA aa = new AA();
        //2.创建子类对象实例，父类也会被加载
//        AA aa = new AA();
        //3.使用类的静态成员时(静态属性，静态方法)
//        System.out.println(Cat.n1);

        //静态代码块只会调用一次
//        DD dd = new DD();
//        DD dd1 = new DD();

        //如果只是使用类的静态成员时，普通代码块并不会执行
        System.out.println(DD.n1); // 8888
    }
}

class DD{
    public static int n1 = 8888; // 静态属性

    //静态代码块
    static{
        System.out.println("DD 的静态代码块被执行...");
    }

    //普通代码块
    {
        System.out.println("DD 的普通代码块被执行...");
    }
}

class Cat{
    public static int n1 = 999; // 静态属性

    //静态代码块
    static {
        System.out.println("Cat 的静态代码被执行...");
    }
}

class BB {
    //静态代码块
    static {
        System.out.println("BB 的静态代码块");
    }
}

class AA extends BB{
 //静态代码块
 static {
     System.out.println("AA 的静态代码块");
 }
}